/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package network.packets;

import utils.StringUtils;
import utils.Utils;
/**
 *
 * @author Kvest
 */
public class SQLResponce extends Packet
{
    private String[] tariffzones;

    public SQLResponce(byte[] data)
    {
        super(SQL_RESPONCE);
        tariffzones = null;

        parse(data);
    }

    protected void parse(byte[] data)
    {
        int offset = 0;

        //Пропускаем название пакета
        byte[] buffer4 = new byte[4];
        System.arraycopy(data, offset, buffer4, 0, buffer4.length);
        offset += buffer4.length + Utils.byteToInt(buffer4);

        //Строка ошибки
        System.arraycopy(data, offset, buffer4, 0, buffer4.length);
        offset += buffer4.length;
        int size = Utils.byteToInt(buffer4);
        //Если произошла ошибка
        if (size > 0)
        {
            /*temp = new byte[size];
            for (int i=0;i<size;i++)
            {
                    temp[i] = body[index++];
            }
            System.out.println("Err = " + Utils.byteToString(temp));*/
            return;
        }

        System.arraycopy(data, offset, buffer4, 0, buffer4.length);
        offset += buffer4.length;
        size = Utils.byteToInt(buffer4);

        if (size == 0)
        {
            return;
        }

        //Пропускаем имена столбцов
        for (int i = 0; i < size; ++i)
        {
            System.arraycopy(data, offset, buffer4, 0, buffer4.length);
            offset += buffer4.length;
            offset += Utils.byteToInt(buffer4);
        }

        //Полезные данные
        System.arraycopy(data, offset, buffer4, 0, buffer4.length);
        offset += buffer4.length;
        size = Utils.byteToInt(buffer4);
        tariffzones = new String[size];

        int strSize;
        byte[] buffer;
        for (int i = 0; i < size; ++i)
        {
            //Т.к. знаем что размер массива равен 1
            offset += 4;
            //первая колонка
            System.arraycopy(data, offset, buffer4, 0, buffer4.length);
            offset += buffer4.length;
            strSize = Utils.byteToInt(buffer4);
            buffer = new byte[strSize];
            System.arraycopy(data, offset, buffer, 0, buffer.length);
            offset += buffer.length;
            tariffzones[i] = StringUtils.bytesToStr(buffer);
            //вторая колонка
            /*temp = new byte[4];
            for (int j=0;j<4;j++)
            {
                temp[j] = body[index++];
            }
            strSize = Utils.byteToInt(temp);
            temp = new byte[strSize];
            for (int j=0;j<strSize;j++)
            {
                temp[j] = body[index++];
            }
            res[i] += Utils.byteToString(temp);*/
        }
        
        buffer4 = null;
        buffer = null;
    }

    public String[] getTariffzones()
    {
        return tariffzones;
    }
}
